home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / ltransport_alien_scripts.lua < prev    next >
Encoding:
Text File  |  2006-08-31  |  8.7 KB  |  225 lines

  1.  
  2. function units_ltransport_alien_setup()
  3.     units_setup(3,true,ENET_EFFECT_PS_SETUPSMOKE_LARGE,ENET_EFFECT_GEOMETRY_LANDTRANSPORTALIENSHADOW)
  4. end
  5.  
  6. function units_ltransport_alien_resetup()
  7.     units_setup(3,true,nil,ENET_EFFECT_GEOMETRY_LANDTRANSPORTALIENSHADOW)
  8. end
  9.  
  10. function units_ltransport_alien_select()
  11.     units_select(22)
  12. end
  13.  
  14. function units_ltransport_alien_unselect()
  15.     units_unselect()
  16. end
  17.  
  18. function units_ltransport_alien_selectenemy()
  19.     uniGetExecutor():addSimpleEffect(ENET_EFFECT_SELECTEDGEOMETRY_ENEMY)
  20. end
  21.  
  22. function units_ltransport_alien_damaged()
  23.     uniGetExecutor():applyDamage(uniGetLife())
  24. end
  25.  
  26. function units_ltransport_alien_highlight()
  27.     uniGetExecutor():addEffectWithRadius(ENET_EFFECT_GEOMETRY_HIGHLIGHT,15)
  28. end
  29.  
  30. function units_ltransport_alien_explode()
  31.     units_explode_big1()
  32. end
  33.  
  34. function units_ltransport_alien_move()
  35.     local unit = uniGetExecutor()
  36.     local sound = unit:play3DSound("landtransport_move.wav",1)
  37.     local steps = {}
  38.     local i = 0;
  39.     for i = 0,1 do
  40.         steps[i] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_DYNAMICGEOMETRY_LIGHTTANKSTEPSEMITTER)
  41.         steps[i+2] = unit:getBone(ENBT_STEPEMITTER,i):addSimpleEffect(ENET_EFFECT_PS_NEWTRACKSMOKE)
  42.     end
  43.     waitDeath(unit:addRotationEffect(ENET_EFFECT_ROTATE_UNIT,MATH_PI * 1.0))
  44.     waitDeath(unit:addMoveEffect(ENET_EFFECT_MOVE_LINEAR,100))
  45.     sound:destroy()
  46.     unit:play3DSound("landtransport_stop.wav",0):destroy()
  47.     for i = 0,1 do
  48.         if(unit:getScale() < 1.0) then 
  49.             steps[i]:destroy()
  50.         else
  51.             steps[i]:setTransformOwner()
  52.             steps[i]:suspendedDestroy(70)
  53.         end
  54.         steps[i+2]:suspendedDestroy(1.0)
  55.     end
  56. end
  57.  
  58. function units_ltransport_alien_fire()
  59. end
  60.  
  61. function units_ltransport_alien_load()
  62.     local unit = uniGetExecutor()
  63.     local cargo = uniGetTarget()
  64.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  65.     waitDeath(unit:parabolicTargetting(cargo))
  66.     unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  67.     unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  68.     unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  69.     cargo:setVisibility(true,false)
  70.     uniSetPosition(unit:getBone(ENBT_FIRE1):getWorldPosition())
  71.     units_load_shrink(cargo)
  72.     local ground = units_addGround(unit,ENET_LTRANSPORTALIEN_GROUND)
  73.     local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
  74.     cargo:terminateCommand()
  75.     cargo:executeCommand(ENC_INSIDE,true)
  76.     while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
  77.     cargo:setTransformOwner(units_findfreefirespot(unit,1))
  78.     unit:setCurrentAnimationRepeatCount(0)
  79.     cargo:setVisibility(false,false)
  80.     cargo:terminateCommand()
  81. end
  82.  
  83. function units_ltransport_alien_unload()
  84.     local unit = uniGetExecutor()
  85.     local cargo = uniGetTarget()
  86.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  87.     local pos = uniGetPosition()
  88.     waitDeath(unit:parabolicTargetting(pos))
  89.     unit:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  90.     unit:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  91.     unit:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  92.     local ground = units_addGround(unit,ENET_LTRANSPORTALIEN_GROUND)
  93.     cargo:setLocalOrientation(0,1,0,0,0,-1)
  94.     cargo:setTransformOwner()
  95.     consoleWrite("unload before scale")
  96.     cargo:setScale(0.4,0.4,0.4)
  97.     consoleWrite("unload after scale")
  98.     cargo:setVisibility(true,false)
  99.     local movecmd_uid = cargo:executeCommand(ENC_MOVE,true)
  100.     cargo:terminateCommand()
  101.     cargo:executeCommand(ENC_INSIDE,true)
  102.     while(cargo:getCurrentCommandUID() == movecmd_uid) do pause() end
  103.     units_unload_growth(cargo)
  104.     cargo:setVisibility(true,true)
  105.     unit:setCurrentAnimationRepeatCount(0)
  106.     cargo:terminateCommand()
  107. end
  108.  
  109. function units_ltransport_alien_transfer()
  110.     local unit = uniGetExecutor()
  111.     local cargo = uniGetTarget()
  112.     units_waitCommandByUID(cargo,unit:getCurrentCommandUID() - 1)
  113.     local from = cargo:getTransformOwner():getTransformOwner()
  114.     local fromType = from:getEffectType()
  115.     units_waitCommandByUID(from,unit:getCurrentCommandUID() - 2)    
  116.     if(fromType == ENET_UNIT_HELICOPTER_ALIEN) then
  117.         waitDeath(from:parabolicTargetting(unit))
  118.         cargo:setTransformOwner()
  119.         units_ltransport_alien_load()
  120.         from:setCurrentAnimationRepeatCount(0)
  121.         from:terminateCommand()
  122.     elseif(fromType == ENET_UNIT_LANDTRANSPORT_ALIEN or fromType == ENET_UNIT_SEATRANSPORT_ALIEN) then
  123.         waitDeath(from:parabolicTargetting(unit))
  124.         from:addAnimationToQueue(ENAT_PREPAREFORFIRE1,1)
  125.         from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  126.         from:addAnimationToQueue(ENAT_AFTERFIRE1,1)
  127.         local g_type = ENET_STRANSPORTALIEN_GROUND
  128.         if(fromType == ENET_UNIT_LANDTRANSPORT_ALIEN) then g_type = ENET_LTRANSPORTALIEN_GROUND end
  129.         local ground = units_addGround(from,g_type)
  130.         cargo:setLocalOrientation(0,1,0,0,0,-1)
  131.         cargo:setTransformOwner()
  132.         cargo:setScale(0.4,0.4,0.4)
  133.         units_ltransport_alien_load()
  134.         from:setCurrentAnimationRepeatCount(0)
  135.         from:terminateCommand()
  136.     elseif(fromType == ENET_UNIT_PLATFORM_ALIEN) then
  137.         waitDeath(from:parabolicTargetting(unit))
  138.         from:addAnimationToQueue(ENAT_IDLETIMEOUT1,1)
  139.         from:addAnimationToQueue(ENAT_FIREPOSITION1,MATH_INFINITY)
  140.         from:addAnimationToQueue(ENAT_IDLETIMEOUT2,1)
  141.         local ground = units_addGround(from,ENET_PLATFORM_GROUND_ALIEN)
  142.         cargo:setTransformOwner()
  143.         units_ltransport_alien_load()
  144.         from:setCurrentAnimationRepeatCount(0)
  145.         from:terminateCommand()
  146.     else
  147.         consoleWrite("attempt to reload from unknown transport type!!!")
  148.     end
  149. end
  150.  
  151. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_MOVE,"units_ltransport_alien_move")
  152. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_FIRE1,"units_ltransport_alien_fire")
  153. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_FIRE2,"units_ltransport_alien_fire")
  154. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_SELECT,"units_ltransport_alien_select")
  155. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_SELECTENEMY,"units_ltransport_alien_selectenemy")
  156. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_UNSELECT,"units_ltransport_alien_unselect")
  157. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_SETUP,"units_ltransport_alien_setup")
  158. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_RESETUP,"units_ltransport_alien_resetup")
  159. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_DAMAGED,"units_ltransport_alien_damaged")
  160. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_EXPLODE,"units_ltransport_alien_explode")
  161. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_HIGHLIGHT,"units_ltransport_alien_highlight")
  162. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_TRANSFER,"units_ltransport_alien_transfer")
  163. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_LOAD,"units_ltransport_alien_load")
  164. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_UNLOAD,"units_ltransport_alien_unload")
  165. registerCommand(ENSCRIPTSET_LANDTRANSPORT_ALIEN,ENC_INSIDE,"units_inside")
  166.  
  167. -- make description of unit
  168. desc = getEffectDescriptionP(ENET_UNIT_LANDTRANSPORT_ALIEN)
  169. desc.ClassID = ENCLASS_MESHINSTANCE
  170. desc.EffectClassType = ENECT_GEOMETRY
  171. desc.FileName = "landtransport_alien.rmd"
  172. desc.ScriptSet = ENSCRIPTSET_LANDTRANSPORT_ALIEN
  173. desc.MoveType = ENMOVE_GROUNDORIENTED
  174. desc.RenderType = ENRENDERTYPE_GEOMETRY
  175. desc.Material = ENMAT_RIGIDSKINNEDMESH
  176. desc.MaterialColors = units_materialcolors_human
  177. desc.isPlacesVisible = false
  178.  
  179. -- shadow
  180. desc = getEffectDescriptionP(ENET_EFFECT_GEOMETRY_LANDTRANSPORTALIENSHADOW)
  181. desc.ClassID = ENCLASS_MESHINSTANCE
  182. desc.EffectClassType = ENECT_GEOMETRY
  183. desc.FileName = "landtransport_alien_shadow.rmd"
  184. desc.RenderType = ENRENDERTYPE_SHADOW
  185. desc.Material = ENMAT_SHADOW
  186. desc.MaterialColors = units_materialcolors_shadow
  187.  
  188. -- register new unit to logic
  189. unitDesc = logic_getUnitDescP(19)
  190. unitDesc.group = 0
  191. unitDesc.order = 10
  192. unitDesc.unit_res_id = ENET_UNIT_LANDTRANSPORT_ALIEN
  193. unitDesc.unit_icon_id = "Landtransport_a_small_normal.dds"
  194. unitDesc.active_id = "Landtransport_a_small_active.dds"
  195. unitDesc.pressed_id = "Landtransport_a_small_pressed.dds"
  196. unitDesc.big_icon_id = "Landtransport_a_big_normal.dds"
  197. unitDesc.small_icon_id = "Landtransport_l_stats.dds"
  198. unitDesc.HP = 3
  199. unitDesc.MP = 50
  200. unitDesc.WR = 0
  201. unitDesc.min_WR = 0
  202. unitDesc.WD = 0
  203. unitDesc.WR2 = 0
  204. unitDesc.min_WR2 = 0
  205. unitDesc.WD2 = 0
  206. unitDesc.ability = 1
  207. unitDesc.transport = 2
  208. unitDesc.value = 2
  209. unitDesc.race = 1
  210. unitDesc.fire_pause = 0.0
  211. unitDesc.move_pause = 6.0
  212. unitDesc.unit_info_scale = 0.06
  213. unitDesc.scn_name = "LTRANSPA"
  214.  
  215.  
  216. ------------------------------------------------------------------------------------------
  217. ------------------------------------------------------------------------------------------
  218. ------------------------------------------------------------------------------------------
  219. desc = getEffectDescription(ENET_EFFECT_GEOMETRY_VEGETATION_FURPALM)
  220. desc.FileName = "ltransport_alien_ground.smd"
  221. desc.effectUsageType = ENEUT_GENERIC
  222. desc.Geometry.isCollisionable = true
  223. changeEffect(ENET_LTRANSPORTALIEN_GROUND,desc)
  224.  
  225.